#
# Makefile  --
#
# Makefile for Extended Tcl C sources.  This will compile all of Extended Tcl
# and add it to the libtcl.a in the parent directory.  Generates a Tcl shell
# in the parent directory.
# 
#------------------------------------------------------------------------------
# Copyright 1992 Karl Lehenbauer and Mark Diekhans.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided
# that the above copyright notice appear in all copies.  Karl Lehenbauer and
# Mark Diekhans make no representations about the suitability of this
# software for any purpose.  It is provided "as is" without express or
# implied warranty.
#------------------------------------------------------------------------------
# $Id: Makefile,v 2.0 1992/10/16 04:51:22 markd Rel $
#------------------------------------------------------------------------------
#

include ../config.mk
include ../config/$(TCL_CONFIG_FILE)
SHELL=/bin/sh

#------------------------------------------------------------------------------

OPTFLAGS= -O3
CFLAGS= $(TARGET_FLAG) $(OPTFLAGS) $(XCFLAGS) -I../$(TCL_UCB_DIR) $(MEM_DEBUG_FLAGS) \
        $(SYS_DEP_FLAGS)

#------------------------------------------------------------------------------

OBJS= 	main.o     tclxbsrc.o tclxcclk.o tclxchmd.o \
	tclxclck.o tclxclp.o  tclxcret.o tclxdebg.o \
	tclxdup.o  tclxfcmd.o tclxfctl.o tclxfmat.o \
	tclxfsca.o tclxgdat.o tclxgenl.o tclxhndl.o \
	tclxid.o   tclxklst.o tclxlib.o  tclxlist.o \
	tclxmath.o tclxmerr.o tclxmsgc.o tclxproc.o \
	tclxprof.o tclxrexp.o tclxsel.o  tclxsig.o  \
	tclxstr.o  tclxstup.o tclxunix.o tclxutil.o
 
#------------------------------------------------------------------------------

all: made.tmp ../tcl

made.tmp: $(OBJS) $(CPLUSOBJS)
	$(AR) cr ../libtcl.a $(OBJS) $(CPLUSOBJS)
	touch made.tmp

tclxstup.o: patchlvl.h tclxstup.c
	$(CC) -c $(CFLAGS) -DTCL_DEFAULT=\"$(TCL_DEFAULT)\" tclxstup.c

main.o: patchlvl.h main.c
	$(CC) -c $(CFLAGS) $(HISTORY_FLAG) main.c

tclxgdat.c: tclxgdat.y
	$(YACC) tclxgdat.y
	mv y.tab.c tclxgdat.c

../tcl: ../libtcl.a made.tmp 
	$(RANLIB_CMD) ../libtcl.a
	$(CC) $(CFLAGS) main.o ../libtcl.a $(LIBS) $(XLDFLAGS) -o ../tcl
	if $(DO_STRIPPING) ; then \
	    strip ../tcl; \
	    $(MCS_CMD) ../tcl; fi


#------------------------------------------------------------------------------
# This is a painful situation.  The file tcl++.h requires string.h, which is
# redefined in the UCB Tcl directory.  We force the compiler to search the
# C++ directories first.

tclplus.o: tclplus.c tclplus.h
	$(CCPLUS) -c -I $(CCPLUSINCL) $(CFLAGS) $(HISTORY_FLAG) tclplus.cc

#------------------------------------------------------------------------------
# This is just to test if it compiles.

tclplus: ../tclplus

../tclplus: mainplus.o
	$(CCPLUS) $(CFLAGS) main++.o ../libtcl.a $(LIBS) $(XLDFLAGS) \
	-o ../tcl++

mainplus.o: tclplus.h mainplus.c
	$(CCPLUS) -c -I /usr/include/CC $(CFLAGS) $(HISTORY_FLAG) mainplus.C


#------------------------------------------------------------------------------

clean:
	touch junk~
	-rm -f made.tmp tclxgdat.c
	-rm -f *~ *.o ../tcl ../tclplus

